<html>
<head>
  <title>10softmax回归模型</title>
  <basefont face="微软雅黑" size="2" />
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  <meta name="exporter-version" content="Evernote Windows/307027 (zh-CN, DDL); Windows/6.1.0 (Win32);"/>
  <style>
    body, td {
      font-family: 微软雅黑;
      font-size: 10pt;
    }
  </style>
</head>
<body>
<a name="1099"/>
<h1>10softmax回归模型</h1>

<div>
<span><div>         <span style="color: rgb(0, 0, 128);"><strong><span style="font-size: 18px;">说明：</span></strong></span><br clear="none"/></div><div>           在 softmax回归中，我们解决的是多分类问题（相对于 logistic 回归解决的二分类问题），类标 <img src="10softmax回归模型_files/Image.png" type="image/png" data-filename="Image.png" alt="\textstyle y"/> 可以取 <img src="10softmax回归模型_files/Image [1].png" type="image/png" data-filename="Image.png" alt="\textstyle k"/> 个不同的值（而不是 2 个）。因此，对于训练集 <img src="10softmax回归模型_files/Image [2].png" type="image/png" data-filename="Image.png" alt="\{ (x^{(1)}, y^{(1)}), \ldots, (x^{(m)}, y^{(m)}) \}"/>，我们有 <img src="10softmax回归模型_files/Image [3].png" type="image/png" data-filename="Image.png" alt="y^{(i)} \in \{1, 2, \ldots, k\}"/>。（注意此处的类别下标从 1 开始，而不是 0）。例如，在 MNIST 数字识别任务中，我们有 <img src="10softmax回归模型_files/Image [4].png" type="image/png" data-filename="Image.png" alt="\textstyle k=10"/> 个不同的类别。
   </div><div>          对于给定的测试输入 <img src="10softmax回归模型_files/Image [5].png" type="image/png" data-filename="Image.png" alt="\textstyle x"/>，我们想用假设函数针对<span style="color: rgb(0, 0, 128);">每一个类别j估算出概率值 <img src="10softmax回归模型_files/Image [6].png" type="image/png" data-filename="Image.png" alt="\textstyle p(y=j | x)"/>。</span>也就是说，我们想估计 <img src="10softmax回归模型_files/Image [7].png" type="image/png" data-filename="Image.png" alt="\textstyle x"/> 的每一种分类结果出现的概率。因此，我们的假设函数将要输出一个 <img src="10softmax回归模型_files/Image [8].png" type="image/png" data-filename="Image.png" alt="\textstyle k"/> 维的向量（向量元素的和为1）来表示这 <img src="10softmax回归模型_files/Image [9].png" type="image/png" data-filename="Image.png" alt="\textstyle k"/> 个估计的概率值。 具体地说，我们的假设函数 <img src="10softmax回归模型_files/Image [10].png" type="image/png" data-filename="Image.png" alt="\textstyle h_{\theta}(x)"/> 形式如下：
</div><div>                 <img src="10softmax回归模型_files/Image [11].png" type="image/png" data-filename="Image.png" alt="\begin{align} h_\theta(x^{(i)}) = \begin{bmatrix} p(y^{(i)} = 1 | x^{(i)}; \theta) \\ p(y^{(i)} = 2 | x^{(i)}; \theta) \\ \vdots \\ p(y^{(i)} = k | x^{(i)}; \theta) \end{bmatrix} = \frac{1}{ \sum_{j=1}^{k}{e^{ \theta_j^T x^{(i)} }} } \begin{bmatrix} e^{ \theta_1^T x^{(i)} } \\ e^{ \theta_2^T x^{(i)} } \\ \vdots \\ e^{ \theta_k^T x^{(i)} } \\ \end{bmatrix} \end{align}"/><br clear="none"/></div><div><br clear="none"/></div><div><span style="font-size: 18px; color: rgb(0, 0, 128);"><strong>代价函数：</strong></span><br clear="none"/></div><div><span style="font-size: 18px; color: rgb(0, 0, 128);"><strong>       </strong></span>现在我们来介绍 softmax 回归算法的代价函数。在下面的公式中，<img src="10softmax回归模型_files/Image [12].png" type="image/png" data-filename="Image.png" alt="\textstyle 1\{\cdot\}"/> 是示性函数，其取值规则为：
<span style="font-size: 18px; color: rgb(0, 0, 128);"></span>
<pre><img src="10softmax回归模型_files/Image [13].png" type="image/png" data-filename="Image.png" alt="\textstyle 1\{"/> 值为真的表达式 <img src="10softmax回归模型_files/Image [14].png" type="image/png" data-filename="Image.png" alt="\textstyle \}=1"/></pre>
<p>， <img src="10softmax回归模型_files/Image [15].png" type="image/png" data-filename="Image.png" alt="\textstyle 1\{"/> 值为假的表达式 <img src="10softmax回归模型_files/Image [16].png" type="image/png" data-filename="Image.png" alt="\textstyle \}=0"/>。举例来说，表达式 <img src="10softmax回归模型_files/Image [17].png" type="image/png" data-filename="Image.png" alt="\textstyle 1\{2+2=4\}"/> 的值为1 ，<img src="10softmax回归模型_files/Image [18].png" type="image/png" data-filename="Image.png" alt="\textstyle 1\{1+1=5\}"/>的值为 0。我们的<span style="color: rgb(0, 0, 128);"><strong>代价函数</strong></span>为：
</p><span style="font-size: 18px; color: rgb(0, 0, 128);"><strong>
</strong></span><dl><dd><strong><img src="10softmax回归模型_files/Image [19].png" type="image/png" data-filename="Image.png" alt="\begin{align} J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}\right] \end{align}"/></strong></dd><dd><strong><span style="font-size: 18px; color: rgb(0, 0, 128);"><strong>参数化特点：<br clear="none"/></strong></span></strong></dd><dd><strong><span style="font-size: 18px; color: rgb(0, 0, 128);"><strong><span style="font-size: 18px; color: rgb(0, 0, 128);"><strong>          </strong></span></strong></span></strong></dd></dl><dl><dd><p>Softmax 回归有一个不寻常的特点：它有一个“冗余”的参数集。为了便于阐述这一特点，假设我们从参数向量 <img src="10softmax回归模型_files/Image [20].png" type="image/png" data-filename="Image.png" alt="\textstyle \theta_j"/> 中减去了向量 <img src="10softmax回归模型_files/Image [21].png" type="image/png" data-filename="Image.png" alt="\textstyle \psi"/>，这时，每一个 <img src="10softmax回归模型_files/Image [22].png" type="image/png" data-filename="Image.png" alt="\textstyle \theta_j"/> 都变成了 <img src="10softmax回归模型_files/Image [23].png" type="image/png" data-filename="Image.png" alt="\textstyle \theta_j - \psi"/>(<img src="10softmax回归模型_files/Image [24].png" type="image/png" data-filename="Image.png" alt="\textstyle j=1, \ldots, k"/>)。此时假设函数变成了以下的式子：
</p></dd></dl><dl><dd>
<dl><dd><img src="10softmax回归模型_files/Image [25].png" type="image/png" data-filename="Image.png" alt="\begin{align} p(y^{(i)} = j | x^{(i)} ; \theta) &= \frac{e^{(\theta_j-\psi)^T x^{(i)}}}{\sum_{l=1}^k e^{ (\theta_l-\psi)^T x^{(i)}}} \\ &= \frac{e^{\theta_j^T x^{(i)}} e^{-\psi^Tx^{(i)}}}{\sum_{l=1}^k e^{\theta_l^T x^{(i)}} e^{-\psi^Tx^{(i)}}} \\ &= \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)}}}. \end{align}"/></dd></dl>
<br clear="none"/>
换句话说，从 <img src="10softmax回归模型_files/Image [26].png" type="image/png" data-filename="Image.png" alt="\textstyle \theta_j"/> 中减去 <img src="10softmax回归模型_files/Image [27].png" type="image/png" data-filename="Image.png" alt="\textstyle \psi"/> 完全不影响假设函数的预测结果！这表明前面的 softmax 回归模型中存在冗余的参数。</dd><dd><br clear="none"/></dd></dl><div><span style="color: rgb(0, 0, 128);"><strong><span style="font-size: 18px;">权重衰减：</span></strong></span><span style="color: rgb(0, 0, 128);"><strong><span style="font-size: 18px;"><br clear="none"/></span></strong></span><p>我们通过添加一个权重衰减项 <img src="10softmax回归模型_files/Image [28].png" type="image/png" data-filename="Image.png" alt="\textstyle \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^{n} \theta_{ij}^2"/> 来修改代价函数，这个衰减项会惩罚过大的参数值，现在我们的代价函数变为：
</p>
<dl><dd>     </dd></dl>
<p><br clear="none"/>
有了这个权重衰减项以后 (<img src="10softmax回归模型_files/Image [29].png" type="image/png" data-filename="Image.png" alt="\textstyle \lambda > 0"/>)，代价函数就变成了严格的凸函数，这样就可以保证得到唯一的解了。 此时的 Hessian矩阵变为可逆矩阵，并且因为<img src="10softmax回归模型_files/Image [30].png" type="image/png" data-filename="Image.png" alt="\textstyle J(\theta)"/>是凸函数，梯度下降法和 L-BFGS 等算法可以保证收敛到全局最优解。
</p><p><br clear="none"/>
为了使用优化算法，我们需要求得这个新函数 <img src="10softmax回归模型_files/Image [31].png" type="image/png" data-filename="Image.png" alt="\textstyle J(\theta)"/> 的导数，如下：
</p>
<dl><dd><img src="10softmax回归模型_files/Image [32].png" type="image/png" data-filename="Image.png" alt="\begin{align} \nabla_{\theta_j} J(\theta) = - \frac{1}{m} \sum_{i=1}^{m}{ \left[ x^{(i)} ( 1\{ y^{(i)} = j\} - p(y^{(i)} = j | x^{(i)}; \theta) ) \right] } + \lambda \theta_j \end{align}"/></dd></dl>
<p><br clear="none"/>
通过最小化 <img src="10softmax回归模型_files/Image [33].png" type="image/png" data-filename="Image.png" alt="\textstyle J(\theta)"/>，我们就能实现一个可用的 softmax 回归模型。
</p></div>
                  </div></span>
</div></body></html> 